A RAID system creates one or more pools of data storage space from several physical storage devices. RAID systems can use a variety of different techniques for allocating data among disks of the array, where the different techniques are commonly identified by a RAID level. Different RAID levels each have different requirements and capabilities.
RAID level 0 provides striping of data, meaning that a large data block is broken into smaller pieces and written in an interleaved manner onto multiple disks. RAID level 0 boosts performance for high-bandwidth operations, but does not provide any fault tolerance because it does not offer data redundancy.
RAID level 1 provides fault tolerance by mirroring data on two or more disks. RAID level 1 is relatively expensive because, when compared with non-mirrored storage space, it requires storage space in quantities that are at least twice the quantity of data to be written.
RAID level 10 (also known as RAID 0/1) is a combination of RAID levels 0 and 1, in which a RAID level 0 stripe set of data is created across a two disk array and a duplicate of the first stripe set is then mirrored on another two disk array for fault tolerance. This configuration provides the performance benefits of RAID level 0 and the redundancy of RAID level 1, but is costly because at least four disks are necessary to create a RAID 10 configuration.
RAID level 2 uses Hamming Error Correcting Codes to achieve fault tolerance and parallel access for input/output operations. In RAID level 2, bytes of data are striped across an array of disks, which allows very high data transfer rates when accessing large quantities of data, but may provide unacceptable performance for read/write operations for smaller data blocks. RAID level 2 also requires one check disk for each data disk to detect and correct any errors. For these reasons, RAID level 2 is not commonly used.
RAID level 3 essentially provides a fault tolerant version of RAID level 0 that trades some data storage capacity to provide fault tolerance. In RAID level 3, data are striped in bytes across a plurality of disks, while at least one disk is reserved to store parity information. The parity data are used to maintain data integrity across all drives in the RAID system. RAID level 3 achieves high data transfer rates by reading from or writing to multiple drives in parallel while providing the ability to reconstruct data if a single drive fails.
RAID level 4 is similar to RAID level 3 in that it stripes data across different disks and reserves a disk for parity data, except that data are striped across multiple disks in sectors rather than in bytes. Thus, RAID level 4 is efficient for high input/output transactions. However, as with RAID level 3, an inherent bottleneck exists with RAID level 4 at the parity disk because parity encoding on the parity disk is required whenever data are written to the disk array.
RAID level 5 is similar to RAID level 4 in that it stripes data across different disks in sectors. However, RAID level 5 avoids the inherent bottleneck of RAID level 4 by also striping the parity data across disks of the array. Although RAID level 5 provides fast data throughput, performance is sacrificed for data rebuilds or reading data from an array with a failed disk because of parity striping.
RAID level 6 is similar to RAID level 5, except that it uses a second level of independently calculated and distributed parity information for additional fault tolerance, which provides additional security in the event that two drives fail.
RAID level 50 (also known as RAID 0/5) is a combination of RAID level 0 and RAID level 5. Multiple RAID level 5 arrays are striped together using a RAID level 0 configuration. Parity is maintained separately for each RAID level 5 group within the striped array. The configuration provides the advantages of RAID level 5 for small data transfers with the added performance of striping for read/write operations.